#include "../../../Include/Utils/Ticker/WizUtilsTicker.hpp"


namespace Wiz
{
    namespace Ticker
    {
        template<class TimeT>
        Type<TimeT>::Type()
        {
        }

        template<class TimeT>
        Type<TimeT>::~Type()
        {
        }

        template<class TimeT>
        ::Wiz::Void::Type Type<TimeT>::Tick(const tTime& DeltaTime)
        {
            m_SignalObjs(DeltaTime);
        }

        template<class TimeT>
        ::Wiz::Void::Type Type<TimeT>::Register(const tObject* ObjPtr)
        {
            WIZ_ASSERT(::Wiz::IsValidPtr(ObjPtr));
            m_SignalObjs.Register(ObjPtr, &tObject::DoTick);
        }

        template<class TimeT>
        ::Wiz::Void::Type Type<TimeT>::Unregister(const tObject* ObjPtr)
        {
            WIZ_ASSERT(::Wiz::IsValidPtr(ObjPtr));
            m_SignalObjs.Unregister(ObjPtr, &tObject::DoTick);
        }

        //////////////////////////////////////////////////////////////////////////
        template class Type<::Wiz::Real32::Type>;
        template class Type<::Wiz::Real64::Type>;

        template class Type<::Wiz::Int8::Type>;
        template class Type<::Wiz::Int16::Type>;
        template class Type<::Wiz::Int32::Type>;
        template class Type<::Wiz::Int64::Type>;
        //////////////////////////////////////////////////////////////////////////
    } /// end of namespace Ticker
} /// end of namespace Wiz
